/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sistema.medico.controlador;

import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.query.Constraint;
import com.db4o.query.Predicate;
import com.db4o.query.Query;
import java.util.Comparator;
import java.util.List;
import javax.swing.JOptionPane;
import sistema.medico.datos.DataConnection;
import sistema.medico.negocio.Paciente;

/**
 *
 * @author ESTUDIANTE
 */
public class Controlador_Paciente {
    
    ////////////////////////////////////////////////////////////////////////////
    ObjectContainer db = DataConnection.getInstance();//variable que contiene la informacion de la BD
    private List<Paciente> listPacientes;
    ////////////////////////////////////////////////////////////////////////////
    public void Guardar(Paciente p) {
        db.store(p);
        db.commit();
    }
    
    ////////////////////////////////////////////////////////////////////////////
    public List<Paciente> listar() {
        @SuppressWarnings("UnusedAssignment")
        List<Paciente> ps = null;
        ps = db.query(Paciente.class);//Cojemos todos los registros
        return ps;
    }
    
    ////////////////////////////////////////////////////////////////////////////
    public Paciente getMedico(final String cedula) {
        @SuppressWarnings("UnusedAssignment")
        List<Paciente> ps = null;
        ps = db.query(new Predicate<Paciente>() {
            
        @Override
        public boolean match(Paciente o) {
                return o.getCedula().toLowerCase().contains(cedula.toLowerCase());//convertimos todo a minÃºscula y comparamos
            }
        }, new Comparator<Paciente>() {
            @Override
            public int compare(Paciente o1, Paciente o2) {
                return 0;
            }
        });
        if (ps.size() == 0) {
            JOptionPane.showMessageDialog(null, "No Existe El Cliente");
            return null;
        } else {
            return ps.get(0);
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////
   public List<Paciente> listarMedicosNombreApellido(String nombre, String apellido) {
    final String ape=apellido;
    final String nom=nombre;
    List <Paciente> medico = db.query(
        new Predicate<Paciente>() {
            public boolean match(Paciente e) { return e.getNombre().startsWith(nom) && e.getApellido().startsWith(ape); }});
    return medico;
    }
    
    ////////////////////////////////////////////////////////////////////////////
    public void Actualizar(String cedula, String nombre, String apellido, String direccion, String telefono, String fecha_nacimiento) {
        Query query = db.query();
        query.constrain(Paciente.class);
        Constraint constraint = query.descend("cedula").constrain(cedula);
        ObjectSet resultado = query.execute();
        Paciente paciente = (Paciente) resultado.get(0);
        paciente.setNombre(nombre);
        paciente.setApellido(apellido);
        paciente.setDireccion(direccion);
        paciente.setTelefono(telefono);
        paciente.setFecha_nacimiento(fecha_nacimiento);
        db.store(paciente);
    }
    
    ////////////////////////////////////////////////////////////////////////////
      public String[] cargarComboMedicos() {
        int i = 0;
        listPacientes = listar();
        String[] comboBoxArray = new String[listPacientes.size()];
        for (Paciente medico: listPacientes) {
            comboBoxArray[i]=listPacientes.get(i).getNombre()+ " " + listPacientes.get(i).getApellido();
            i++;
        }
        return comboBoxArray;
    }

    
}
